import { app, BrowserWindow, ipcMain } from 'electron';
import path from "path";
// import { useInfoStore } from "../src/store/modules/info";


let win = null;
const createdWindow = () => {
    win = new BrowserWindow({
        width: 348,
        height: 624,
        frame: false, //取消window自带的关闭最小化等
         resizable: false,//禁止改变主窗口尺寸
        webPreferences: {
            nodeIntegration: true,
            contextIsolation: false,
            protocol: 'electron-dudutalk3-code',
            //  preload: path.join(__dirname, "../preload.js")
        }
    })


    if (process.env.NODE_ENV != 'development') {
        win.loadFile(path.join(__dirname, '../dist/index.html'))
        // win.webContents.openDevTools()
    } else {
        win.loadURL(process.env.VITE_DEV_SERVER_URL)
        win.webContents.openDevTools()
    }

    watchProtocol()

    ipcMain.on('window-min', function () {
        win.minimize();
    })
    ipcMain.on('window-close', function () {
        win.close();
    })

    // ipcMain.on('login',(e,obj)=>{
    //     console.log('登录');
    //     win.webContents.send('login',obj)
    // })
    const gotTheLock = app.requestSingleInstanceLock()
    if (!gotTheLock) {
        app.quit()
    } else {
        app.on('second-instance', (event, commandLine, workingDirectory) => {
            // 当运行第二个实例时,将会聚焦到win这个窗口
            if (win) {
                if (win.isMinimized()) win.restore()
                win.focus()
                win.show()
                if (process.platform === 'win32') {
                    // commandLine 是一个数组， 唤醒的链接作为数组的一个元素放在这里面
                    commandLine.forEach(str => {
                        if (AGREEMENT_REGEXP.test(str)) {
                            // console.log('获取协议链接, 根据参数做各种事情')
                            let arr = str.split('//')
                            win.webContents.send('electron-dudutalk3-code', arr[1])
                        }

                    })
                }
            }
        })

        // mac
        app.on('open-url', (event, url) => {
            const isProtocol = AGREEMENT_REGEXP.test(url)
            if (win) {
                if (win.isMinimized()) win.restore()
                win.focus()
                win.show()
                if (isProtocol) {
                    // console.log('获取协议链接, 根据参数做各种事情')
                    let arr = url.split('//')
                    win.webContents.send('electron-dudutalk3-code', arr[1])
                }
            }


        })
        // 创建 myWindow, 加载应用的其余部分, etc...

    }

}



app.on('ready', () => {
    createdWindow()
})








const agreement = 'electron-dudutalk3-code' // 自定义协议名

// 验证是否为自定义协议的链接
const AGREEMENT_REGEXP = new RegExp(`^${agreement}://`)

// 注册自定义协议
function setDefaultProtocol() {
    let isSet = false // 是否注册成功
    app.removeAsDefaultProtocolClient(agreement) // 每次运行都删除自定义协议 然后再重新注册
    // 开发模式下在window运行需要做兼容
    if (process.env.NODE_ENV === 'development' && process.platform === 'win32') {
        // 设置electron.exe 和 app的路径
        isSet = app.setAsDefaultProtocolClient(agreement, process.execPath, [
            path.resolve(process.argv[1]),
        ])
    } else {
        app.setAsDefaultProtocolClient(agreement)
    }
    console.log('是否注册成功', isSet)
}
setDefaultProtocol()

// // 监听自定义协议唤起
function watchProtocol() {
    // mac唤醒应用 会激活open-url事件 在open-url中判断是否为自定义协议打开事件

    app.on('open-url', (event, url) => {
        const isProtocol = AGREEMENT_REGEXP.test(url)
        if (isProtocol) {
            // console.log('获取协议链接, 根据参数做各种事情')
            let arr = url.split('//')
            win.webContents.send('electron-dudutalk3-code', arr[1])
        }

    })
    // window系统下唤醒应用会激活second-instance事件 它在ready执行之后才能被监听
    app.on('second-instance', (event, commandLine) => {

        if (process.platform === 'win32') {
            // commandLine 是一个数组， 唤醒的链接作为数组的一个元素放在这里面
            commandLine.forEach(str => {
                if (AGREEMENT_REGEXP.test(str)) {
                    // console.log('获取协议链接, 根据参数做各种事情')
                    let arr = str.split('//')
                    win.webContents.send('electron-dudutalk3-code', arr[1])
                }

            })
        }

    })
}

export default app
